home *** CD-ROM | disk | FTP | other *** search
/ JCSM Shareware Collection 1996 September / JCSM Shareware Collection (JCS Distribution) (September 1996).ISO / prgtools / euphor13.zip / EXAMPLE.EX < prev    next >
Text File  |  1995-04-12  |  1KB  |  45 lines

  1. with profile  -- see output in ex.pro
  2.         
  3.         -------------------------------------
  4.         -- Example Program from the Manual --
  5.         -------------------------------------
  6.  
  7.  function merge_sort(sequence x)
  8.  -- put x into ascending order using a recursive merge sort
  9.      integer n, mid
  10.      sequence merged, a, b
  11.  
  12.      n = length(x)
  13.      if n = 0 or n = 1 then
  14.      return x  -- trivial case
  15.      end if
  16.  
  17.      mid = floor(n/2)
  18.      a = merge_sort(x[1..mid])       -- sort first half of x 
  19.      b = merge_sort(x[mid+1..n])     -- sort second half of x
  20.  
  21.      -- merge the two sorted halves into one
  22.      merged = {}
  23.      while length(a) > 0 and length(b) > 0 do
  24.      if compare(a[1], b[1]) < 0 then
  25.          merged = append(merged, a[1])
  26.          a = a[2..length(a)]
  27.      else
  28.          merged = append(merged, b[1])
  29.          b = b[2..length(b)]
  30.      end if
  31.      end while
  32.      return merged & a & b  -- merged data plus leftovers
  33.  end function
  34.  
  35.  procedure print_sorted_list()
  36.  -- generate sorted_list from list 
  37.      ? merge_sort( {9, 10, 3, 1, 4, 5, 8, 7, 6, 2} )
  38.      ? merge_sort( {1.5, -9, 1e6, 100} )
  39.      printf(1, "%s, %s, %s\n", merge_sort({"oranges", "apples", "bananas"}))  
  40.  end procedure
  41.  
  42.  print_sorted_list()     -- this command starts the program 
  43.  puts(1, "\nSee profile results in ex.pro\n")
  44.  
  45.